package com.b2c.ftysys.sevice;

import java.util.List;
import java.util.Map;

import com.b2c.ftysys.domain.B2cFsyWd;
import com.b2c.ftysys.domain.PageResult;

public interface RouteService {
	int regRoute(String routeType, String[] route);

	int delRoute(String routeType);

	List<Map<String, Object>> getRouteByRouteType(String routeType);

	public List<Map<String, Object>> getRouteByRouteType(String ftySku,
			String routeType);

	List<String> getAllRouteType();

	/**
	 * 获取当前执行到的工序
	 * 
	 * @param ftySku
	 * @return 0表示未设置路由， -1表示已经执行结束，其他数字代表将要执行的工序编号
	 */
	public int getFtySkuNowWsId(String ftySku);

	/**
	 * 获取最后一个在制编号
	 * 
	 * @param ftySku
	 * @return
	 */
	public int getLastWipId(String ftySku);

	/**
	 * 获取在制产品的上一个路由编号
	 * 
	 * @param ftySku
	 * @return
	 */
	public int getFtySkuPrevWipId(String ftySku);

	/**
	 * 判断是否是最后一个工序
	 * 
	 * @param ftySku
	 *            产品sku
	 * @param wsId
	 *            判断的工序Id
	 * @return
	 */
	boolean isLastWsId(String proSku, Integer wsId);

	/**
	 * 获取路由设置的分页Object
	 * @param page
	 * @return
	 * @throws ServicesException
	 */
	public PageResult getRouteSettingByPage(PageResult page)
			throws ServicesException;

	/**
	 * 根据款号获取预先设置好的路由设置
	 * 
	 * @param styleNo
	 * @return
	 */
	public B2cFsyWd getRouteSettingByStyleNo(String styleNo);

	/**
	 * 根据工厂Sku号获取预先设置好的路由设置
	 * 
	 * @param ftySku
	 * @return
	 */
	public B2cFsyWd getRouteSettingByFtySku(String ftySku);

	/**
	 * 根据客户Sku获取预先设置好的路由设置
	 * 
	 * @param sku
	 * @return
	 */
	public B2cFsyWd getRouteSettingBySku(String sku);

	/**
	 * 新增预设路由
	 * 
	 * @param wd
	 */
	public void regRouteSetting(B2cFsyWd wd);

	/**
	 * 更新预设路由
	 * 
	 * @param wd
	 */
	public void updateWdByExample(B2cFsyWd wd);

	/**
	 * 删除预设路由
	 * 
	 * @param wdId
	 */
	public void delRouteSetting(Integer wdId);
	
	/**
	 * 导入路由预设文件
	 * @param fileAddr
	 * @return
	 * @throws ServicesException
	 */
	public int importRouteSetting(String fileAddr) throws ServicesException;

}
